//package com.sq.websocket.config;
//
//import jakarta.websocket.*;
//import jakarta.websocket.server.ServerEndpoint;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.context.annotation.Bean;
//import org.springframework.stereotype.Component;
//import org.springframework.web.socket.server.standard.ServerEndpointExporter;
//
//import java.io.IOException;
//import java.util.Map;
//import java.util.concurrent.ConcurrentHashMap;
//import java.util.concurrent.atomic.AtomicInteger;
///**
// * WebSocketConfig
// */
//@Component
//@ServerEndpoint(value = "/ws/{ip}/{event}")
//@Slf4j
//public class MultiClientWebSocket {
//    @Bean
//    public ServerEndpointExporter serverEndpointExporter() {
//        log.info("WebSocketConfig: serverEndpointExporter init WebSocketConfig 注入完成");
//        return new ServerEndpointExporter();
//    }
//    /**
//     * 记录当前在线连接数
//     */
//    private static final AtomicInteger onlineCount = new AtomicInteger(0);
//    /**
//     * 存放所有在线的客户端
//     */
//    private static final Map<String, Session> onlineClients = new ConcurrentHashMap<>();
//    @OnOpen
//    public void onOpen(Session session) {
//        onlineCount.incrementAndGet();
//        onlineClients.put(session.getId(), session);
//        log.info("有新连接加入：{}，当前在线客户端数为：{}", session.getId(), onlineCount.get());
//    }
//    @OnMessage
//    public void onMessage(String message, Session session) throws IOException {
//        System.out.println("收到客户端消息：" + message);
//        session.getBasicRemote().sendText("服务器收到消息：" + message);
//    }
//    @OnClose
//    public void onClose(Session session) {
//        onlineCount.decrementAndGet(); // 在线数减1
//        onlineClients.remove(session.getId());
//        log.info("有一连接关闭：{}，当前在线客户端数为：{}", session.getId(), onlineCount.get());
//    }
//    @OnError
//    public void onError(Throwable t) {
//        log.error("WebSocket 连接出错{}", t.getMessage());
//    }
//    /**
//     * 群发消息
//     *
//     * @param message 消息内容
//     */
//    public void sendMessage(String message) {
//        //log.info("开始给在线的客户端{}群发消息{}",onlineClients,message);
//        for (Map.Entry<String, Session> sessionEntry : onlineClients.entrySet()) {
//            Session toSession = sessionEntry.getValue();
//            log.info("服务端给客户端[{}]发送消息{}", toSession.getId(), message);
//            toSession.getAsyncRemote().sendText(message);
//        }
//    }
//}
